介绍
简要介绍
OVS(Open vSwitch)是一个基于Apache 2.0开源协议的多层软件交换机,致力于提供一个生产级质量的交换平台。OVS支持标准管理接口,并开放前向函数,以实现程序扩展和控制。由于OVS基于多种平台底座存在多种变体,本文以基础版本作为介绍对象。
图1 OVS架构
OVS软件主要的架构由内核态的Datapath和用户态的vswitchd、ovsdb组成。
- Datapath是负责数据交换的内核模块,从网口读取数据,快速匹配FlowTable中的流表项,成功的直接转发,失败的上交vswitchd进程进行处理。在OVS初始化和port binding时注册钩子函数,把端口的报文处理接管到内核模块。
- vswitchd是负责OVS管理和控制的守护进程,通过Unix Socket将配置信息保存到ovsdb中,并通过Netlink和内核模块进行交互。
- ovsdb是OVS数据库,保存了OVS的配置信息。
此外,OVS发布包中还包含了一系列管理工具(ovs-vsctl、ovs-dpctl、ovs-ofctl、ovs-appctl、ovs-docker等),方便用户对OVS进行配置和使用。
OVS在虚拟机和容器等场景中作为虚拟交换机做了很好的适配,除了对外暴露了虚拟网络层的标准控制接口和可视化接口之外,它也提供了跨多物理节点的分布式支持,在多种
当前OVS支持以下特性:
- 具有中继端口和接入端口的标准802.1Q VLAN模型。
- 支持在上游交换机选择是否使用LACP进行网卡组bond。
- 支持NetFlow、sFlow(R)和镜像,以提高可见性。
- 支持QoS(服务质量)配置和看管。
- 支持Geneve、GRE、VXLAN、STT和LISP隧道。
- 支持802.1ag连通性故障管理。
- 支持OpenFlow 1.0及多种扩展。
- 支持C语言和Python绑定的事务配置数据库。
- 使用Linux内核模块实现高性能转发。
其中Linux内核模块支持需要Linux内核版本高于3.10,此外,OVS还可以无需内核模块支持,完全以
安装OVS软件需采用源码编译方式进行安装。
建议的版本
建议使用的版本为“2.14.2”。